6905
18935
저는 Swift 코딩의 초보자 일뿐입니다. 내 아이디어는 두 개의 버튼이있는 앱이라는 매우 간단합니다. 클릭하면 텍스트 필드가 텍스트를 변경합니다.
Main.StoryBoard에서 텍스트 필드와 두 개의 버튼을 추가합니다.
ViewController.swift 파일에서. 나는 이렇게 씁니다.
UIKit 가져 오기
class ViewController : UIViewController {
@IBOutlet weak var textfield : UITextField!
@IBOutlet 약한 var 버튼 : UIButton!
@IBOutlet weak var button2 : UIButton!
@IBAction func action1 (_ 보낸 사람 : UIButton) {
textfield.text = "방금 button1을 클릭했습니다"
}
@IBAction func action2 (_ 보낸 사람 : UIButton) {
textfield.text = "방금 button2를 클릭했습니다"
}
}
괜찮아 야합니다. 그러나 다음과 같은 오류가 나타납니다.
thread1 : 신호 SIGABRT
AppDelegate.swift 파일에서 :
AppDelegate 클래스 : UIResponder, UIApplicationDelegate
내 코드에 어떤 문제가 있습니까? 
문제를 해결하려면 먼저 프로젝트를 정리 한 다음 다시 빌드하십시오.
프로젝트를 청소하려면 메뉴 바 : 제품-> 청소로 이동하십시오.
그런 다음 프로젝트를 다시 빌드하려면 평소처럼 실행 버튼을 클릭하면됩니다.
|
연결이 끊어진 콘센트가있을 때마다 SIGABRT 오류가 발생합니다. 스토리 보드에서보기 컨트롤러를 클릭하고 측면 패널 (화살표 기호)의 연결로 이동합니다. 거기에 여분의 콘센트, 중복 또는 연결되지 않은 여분의 콘센트가 있는지 확인하십시오. 그렇지 않은 경우 콘센트를 코드에 올바르게 연결하지 않았을 수 있습니다.
SIGABRT는 거기에없는 콘센트 (버튼,보기, 텍스트 필드 등)를 호출하려고 할 때 발생합니다.
|
나에게 그것은 콘센트가 아니었다. 나는 오류로 가서 그것이 말한 것을 읽음으로써 문제를 해결했습니다. (또한 멍청이 ..)
이것은 오류였습니다.
그리고 해결책은 다음과 같습니다.
출력에서 위로 스크롤하면 오류가 표시됩니다.
|
이러한 유형의 오류에 대한 일반적인 이유는 IBOutlet 또는 IBAction의 이름을 변경했을 수 있으므로 소스 코드로 이동하여 간단히 확인할 수 있습니다.
main.storyboard를 클릭 한 다음 다음으로 열기를 선택합니다.
그런 다음 소스 코드를 선택하십시오.
소스 코드가 열립니다
변경 한 iboutlet 또는 ibaction의 이름이 있는지 확인한 다음 해당 부분을 선택하고 삭제 한 다음 다시 iboutlet 또는 ibaction을 생성합니다.
이렇게하면 문제가 해결됩니다.
|
제 경우에는 AppDelegate에서 충돌만으로 오류가 발생하지 않았고 다음 옵션 인 OS_ACTIVITY_MODE를 선택 취소해야했습니다. 그러면 .xib 파일에서 실제 충돌 원인을 얻을 수있었습니다.
이것이 당신을 도울 수 있기를 바랍니다 :)
|
나는 같은 문제가 있었다. 스토리 보드에 버튼을 만들어 ViewController에 연결 한 다음 나중에 버튼을 삭제했습니다. 그래서 연결은 여전히 ​​있었지만 버튼은 없었기 때문에 당신과 같은 오류가 발생했습니다.
고치다:
연결 검사기 (스토리 보드의 오른쪽 상단 모서리에있는 화살표)로 이동하여 사용하지 않는 연결을 삭제합니다.
|
Xcode 10에서이 문제가 발생하면 빌드하기 전에 정리해야합니다. 또는 레거시 빌드 시스템으로 전환하십시오. 파일-> 작업 공간 설정 ...-> 빌드 시스템 : 레거시 빌드 시스템.
|
제 경우에는 로그가 전혀 없었습니다.
내 실수는 이미 탐색 스택의 일부인 탐색 스택에 뷰 컨트롤러를 푸시하는 것이 었습니다.
|
때로는 함수가 메인 스레드에서만 실행되어야 할 때도 발생하므로 다음과 같이 메인 스레드에 할당하여 수정할 수 있습니다.
DispatchQueue.main.async {
여기에 귀하의 코드
}
|
저에게이 오류는 수행중인 segue에 적용 할 수없는 준비 단계가 있었기 때문입니다.
긴 이야기:
override func prepare (for segue : UIStoryboardSegue, sender : Any?) {
let gosetup = segue.destination as! 최신 정보
gosetup.wherefrom = updatestring
}
이것은 하나만을위한 것이었을 때 모든 segue에게 행해졌습니다. 그래서 부울을 만들고 그 안에 gosetup을 배치했습니다.
|
이것은 매우 일반적인 오류이며 여러 가지 이유로 발생할 수 있습니다. 가장 일반적인 경우는 스토리 보드의 뷰 컨트롤러에 연결된 IBOUTLET / IBACTION이 스토리 보드가 아닌 스위프트 파일에서 삭제되는 경우입니다. 그렇지 않은 경우 하단 도구 모음의 로그를 사용하여 오류가 무엇인지 확인하고 진단하십시오. 중단 점 및 디버깅을 사용하여 오류를 찾을 수 있습니다.
오류를 수정하는 방법을 알아 보려면 Google에서 찾은 다음 문서를 사용하십시오. https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode
|
제 경우에는 RxSwift를 사용하여 검색을 수행했습니다.
onNext 메서드 내에서 특정 클래스의 공유 인스턴스를 광범위하게 계속 사용했는데, 이로 인해 액세스 할 수 없게되었습니다 (Mutex).
이러한 인스턴스는 반드시 필요한 경우에만 신중하게 처리해야합니다.
제 경우에는 공유 인스턴스 메서드의 반환 값을 안전하게 (그리고 순차적으로) 저장하기 위해 미리 몇 가지 변수를 사용하고 onNext 블록 내에서 재사용했습니다.
|
나는 같은 문제가 있었다. 제 경우에는 파일을 덮어 썼습니다
GoogleService-Info.plist
그 경로에서 :
Platform \ ios \ YOUR_APP_NAME \ Resources \ Resources
제 경우에는 파일이 데이터없이 존재했습니다.
|
매우 적극적인 질문입니다. 이 질문에 답하기 위해 평판 10을 획득하십시오. 평판 요구 사항은 스팸 및 비 응답 활동으로부터이 질문을 보호하는 데 도움이됩니다.
찾고있는 답변이 아닙니까? ios swift 태그가 붙은 다른 질문을 찾아 보거나 직접 질문하십시오.